package cn.cvs.web;

import cn.cvs.pojo.SysRole;
import cn.cvs.pojo.SysUser;
import cn.cvs.service.SysRoleService;
import cn.cvs.util.Constants;
import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class SysRoleController {
    @Resource
    SysRoleService sysRoleService;

    @ResponseBody
    @RequestMapping("/sys/role/simpleList")
    public Object addRole(){
        List<SysRole> sysRoles = sysRoleService.queryAllRoles();
        return JSON.toJSONString(sysRoles);
    }

    //角色列表
    @RequestMapping("/sys/role/list")
    public String list(Model model, HttpSession session){
        List<SysRole> sysRoles = sysRoleService.queryAllRoles();
        model.addAttribute("roleList",sysRoles);
        return "sysRole/list";
    }

    //新增角色页面
    @RequestMapping("sys/role/toAdd")
    public String toAddRole(HttpSession session, Model model, SysRole sysRole){
        return "sysRole/add";
    }
     @PostMapping("/sys/role/add")
    public String addUser(SysRole sysRole, Model model, HttpSession session) {
         SysUser loginUser = (SysUser)session.getAttribute(Constants.USER_SESSION);
         if(loginUser==null){
             //还没有登陆
             model.addAttribute("error", "请登录后操作！");
             return "forward:/toLogin";
         }
         //设置创建的时间
         sysRole.setCreatedTime(new Date());
         //设置创建人的id
         sysRole.setCreatedUserId(loginUser.getId());
         //添加
         int i = sysRoleService.addRole(sysRole);
         if (i > 0) {
             //添加成功
             //重定向角色列表
             return "redirect:/sys/role/list";
         } else {
//            添加失败
             throw new RuntimeException("添加角色失败");
         }
     }
     //验证code是否唯一
   @GetMapping("/sys/role/codeExist")
    @ResponseBody
    public Object codeExist(@RequestParam String code){
        Map<String, Object> map = new HashMap<>();
       if (StringUtils.isEmpty(code)){
           map.put("exist","-1");
           map.put("msg","账户不能为空");
           return JSON.toJSONString(map);
       }
       try{
           int count = sysRoleService.queryRoleCount(code);
           if (count==1){
               //不可用
               map.put("exist","1");
           }else{
               //0可用
               map.put("exist","0");
           }
       }catch (Exception e){
           e.printStackTrace();
           map.put("exist","-1");
           map.put("msg",e.getMessage());
       }
       return JSON.toJSONString(map);
    }
//    跳转到修改页面
    @RequestMapping("/sys/role/toUpdate/{roleId}")
    public String toUpdateRole(@PathVariable("roleId") Integer id, Model model){
        SysRole sysRole = sysRoleService.queryById(id);
        model.addAttribute("sysRole",sysRole);
        return "/sysRole/update";
    }
    @PostMapping("/sys/role/update")
    public String updateRole(Model model, HttpSession session, SysRole sysRole){
        //修改时间
        sysRole.setUpdatedTime(new Date());
        sysRole.setUpdatedUserId(sysRole.getId());
        int i=sysRoleService.updateRole(sysRole);
        if (i>0){
            return "redirect:/sys/role/list";
        }else{
            throw  new RuntimeException("修改失败");
        }
    }

//    //异步删除用户
//    @ResponseBody
//    @DeleteMapping("/sys/role/{rid}")
//    public Object deleteUser(@PathVariable("rid") Integer id,
//                             HttpSession session,
//                             HttpServletRequest request){
//        //返回值对象
//        Map<String,Object> resultMap = new HashMap<>();
//        SysUser loginUser =
//                (SysUser)session.getAttribute(Constants.USER_SESSION);
//        //判断是否登陆
//        if(loginUser==null){
//            resultMap.put("delResult", "noLogin");
//            resultMap.put("msg", "请登陆后再操作");
//            return JSON.toJSONString(resultMap);
//        }
//        //判断是否是管理员
//        if(loginUser.getRoleId()!=1){
//            //非管理员
//            resultMap.put("delResult","notAdmin");
//            resultMap.put("msg", "非管理员不能删除用户");
//            return JSON.toJSONString(resultMap);
//        }
//
//        SysRole sysRole = sysRoleService.delete();
//        if(sysRole==null){
//            resultMap.put("delResult","notexist");
//            return JSON.toJSONString(resultMap);
//        }
//        //删除的用户不能是管理员
//        if(sysRole.getId()==1){
//            //删除的是一个管理员
//            resultMap.put("delResult","delAdmin");
//            resultMap.put("msg", "不能删除管理员");
//            return JSON.toJSONString(resultMap);
//        }
//        //执行删除操作
//        int i = sysRoleService.delete(id);
//        if(i>0){
//            //删除成功
//            resultMap.put("delResult","true");
//        }else{
//            //0
//            //删除失败
//            resultMap.put("delResult","false");
//        }
//        return JSON.toJSONString(resultMap);
//    }
}
